/*
 * Copyright (c) 2012 ASINFO (Asesores Informaticos), todos los derechos
 * reservados. Este software es confidencial y su informacion es propiedad de
 * ASINFO(Asesores Informaticos). No debe revelar tal informacion y debe usarla
 * unicamente de acorde con los terminos de uso.
 */

package ec.linde.modulos.proyectos.servicio;

import java.util.List;
import java.util.Map;

import javax.ejb.Local;

import ec.linde.persistencia.entidades.ProdCabeceraProforma;
import ec.linde.persistencia.entidades.ProdClientes;
import ec.linde.persistencia.entidades.ProdConceptos;
import ec.linde.persistencia.entidades.ProdPartidaDetalle;
import ec.linde.persistencia.entidades.ProdSucursales;
import ec.linde.persistencia.entidades.SeadUsuarios;

/**
 * TODO: Agregar descripcion
 * 
 * FechaCreacion: 10/10/2014
 * 
 * @author: Asinfo
 * @version: 1.0
 */
@Local
public interface ServicioDatosBaseProyectos {

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param id
	 * @return
	 */
	ProdClientes buscarClientePorId(int id);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param id
	 * @return
	 */
	SeadUsuarios buscarUsuarioPorId(int id);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param id
	 * @return
	 */
	ProdSucursales buscarSucursalPorId(int id);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param id
	 * @return
	 */
	ProdCabeceraProforma buscarProformaPorId(int id);

	/**
	 * @param id
	 * @return
	 */
	ProdConceptos buscarConceptoPorId(int id);
	
	/**
	 * TODO: Agregar descripcion del metodo
	 * @param id
	 * @return
	 */
	ProdPartidaDetalle buscarPartidaPorId(int id);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @return
	 */
	List<SeadUsuarios> getObtenerUsuarios();

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @return
	 */
	List<ProdSucursales> getObtenerSucucursal();

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @return
	 */
	List<ProdClientes> getObtenerClientes();

	/**
	 * @return
	 */
	List<ProdConceptos> getObtenerConceptos();

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @return
	 */
	List<ProdCabeceraProforma> getObtenerProformas();

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param prodCabeceraProforma
	 * @return
	 */
	List<ProdPartidaDetalle> getObtenerPartidas(ProdCabeceraProforma prodCabeceraProforma);

	/**
	 * @param idProforma
	 * @return
	 */
	ProdCabeceraProforma cargarDetalleProforma(int idProforma);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param startIndex
	 * @param pageSize
	 * @param sortField
	 * @param sortOrder
	 * @param filter
	 * @return
	 */
	List<ProdCabeceraProforma> obtenerListaPorPaginaProformas(int startIndex, int pageSize, String sortField, boolean sortOrder,
			Map<String, String> filter);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param filter
	 * @return
	 */
	int contarPorCriterioProforma(Map<String, String> filter);
	
	void guardar(ProdPartidaDetalle partida);

}
